home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / commands / mknod.c < prev    next >
C/C++ Source or Header  |  1990-07-23  |  933b  |  44 lines

  1. /* mknod - build a special file        Author: Andy Tanenbaum */
  2.  
  3. main(argc, argv)
  4. int argc;
  5. char *argv[];
  6. {
  7. /* mknod name b/c major minor [size] makes a node. */
  8.  
  9.   int mode, major, minor, dev;
  10.   unsigned int size;
  11.  
  12.   if (argc < 5) badcomm();
  13.   if (*argv[2] != 'b' && *argv[2] != 'c') badcomm();
  14.   if (*argv[2] == 'c' && argc != 5) badchar();
  15.   if (*argv[2] == 'b' && argc != 6) badblock();
  16.   mode = (*argv[2] == 'b' ? 060666 : 020666);
  17.   major = atoi(argv[3]);
  18.   minor = atoi(argv[4]);
  19.   size = (*argv[2] == 'b' ? atoi(argv[5]) : 0);
  20.   if (major < 0 || minor < 0) badcomm();
  21.   dev =  (major << 8) | minor;
  22.   if (mknod(argv[1], mode, dev, size) < 0) perror("mknod");
  23.   exit(0);
  24. }
  25.  
  26. badcomm()
  27. {
  28.   std_err("Usage: mknod name b/c major minor [size_in_blocks]\n");
  29.   exit(1);
  30. }
  31.  
  32. badchar()
  33. {
  34.   std_err("Usage: mknod name c major minor\n");
  35.   exit(1);
  36. }
  37.  
  38. badblock()
  39. {
  40.   std_err("Usage: mknod name b major minor size_in_blocks\n");
  41.   exit(1);
  42. }
  43.  
  44.